МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра Захист інформації
З В І Т
До лабораторної роботи №3
з курсу:
„ Програмування комп’ютерної графіки ”
на тему:
„ Побудова графіків функцій засобами мови С# ”
Львів – 2012
Мета роботи : набути практичних навиків в складанні програм для побудови графіків функцій за допомогою засобів мови С#.
Завдання:
Ознайомитися з методами побудови графіків функцій на екрані монітора комп’ютера.
Вивчити основні процедури мови С# для виведення тексту в графічному режимі.
Написати програму, яка будує в середині екрану систему координат XY і на ній графік функції Y=F(X), використовуючи графічні оператори мови С#, якщо аргумент або параметр змінюється на проміжку [a;b] з кроком h.
N%
Функція
Інтервал
Крок
18
x=[1;20]
h=0.01
Текст програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.Platform.Windows;
namespace Лабораторна3
{
public partial class Form1 : Form
{
double ScreenW, ScreenH; // розміри вікна
private float devX;
private float devY;
private float[,] GrapValuesArray; // масив, котрий буде зберігати значенняx,y точок графіка
private int elements_count = 0; // кількість елементів в масиві
// прапорець, що означає, що масив із значеннями координат графіка поки що не заповнений
private bool not_calculate = true;
/* номер комірки масиву, з якого будуть узяті координати для червоної крапки
для візуалізації текучого кадра*/
private int pointPosition = 0;
float lineX, lineY; // допоміжні змінні для побудови ліній від курсора миші до координатних осей
float Mcoord_X = 0, Mcoord_Y = 0; // теперішні координати курсора миші
public Form1()
{
InitializeComponent();
AnT.InitializeContexts();
}
// функція обробник події таймера
private void Pointingrap_Tick(object sender, EventArgs e)
{
if (pointPosition == elements_count - 1)
pointPosition = 0; // переходимо до початкового елемента
Draw();
pointPosition++;
}
private void Form1_Load(object sender, EventArgs e)
{// ініціалізація бібліотеки glut
Glut.glutInit();
// ініціалізація режиму екрану
Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE);
// установка кольору очищення екрану (RGBA)
Gl.glClearColor(255, 255, 255, 1);
Gl.glViewport(0, 0, AnT.Width, AnT.Height);
// активація проекційної матриці
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
// визначення параметрів настройки проекції, залежно від розмірів сторінелементаOnGl.
if ((float)AnT.Width <= (float)AnT.Height)
{
ScreenW = 30.0;
ScreenH = 30.0 * (float)AnT.Height / (float)AnT.Width;
Glu.gluOrtho2D(0.0, ScreenW, 0.0, ScreenH);
}
else
{
ScreenW = 30.0 * (float)AnT.Width / (float)AnT.Height;
ScreenH = 30.0;
Glu.gluOrtho2D(10.0, 80.0 * (float)AnT.Width / (float)AnT.Height, -25.0, 55.0);
}
devX = (float)ScreenW / (float)AnT.Width;
devY = (float)ScreenH / (float)AnT.Height;
// установка об'єктно-видової матриці
Gl.glMatrixMode(Gl.GL_MODELVIEW);
// старт лічильника, що відповідає за старт функції візуалізації сцени
Pointingrap.Start();
}
// обробка руху миші над елементомOnGl
private void AnT_MouseMove(object sender, MouseEventArgs e)
{
Mcoord_X = e.X; // ...